import router from "@/router";
import axios from "axios";
import elementUI from "element-ui";
import nprogress from "nprogress";
let http = axios.create({//会把传入的对象当成axios的prototype
    baseURL:"/api",//配置默认地址
    withCredentials:true,//将会默认携带认证给后端
    timeout:1000*10,//请求超时设置，如果超过了10秒，那么就会reject
})

// 请求拦截器
http.interceptors.request.use(function(config){
    nprogress.start()
    //由于请求数据的时候需要携带token 但是登录 获取验证码 校验验证码不需要携带token
    let rowPaths = ["/users/getCaptcha","/users/verifyCaptcha","/users/login"];
    //config.url可以获取当前被拦截的请求的请求地址
    if(rowPaths.includes(config.url)){
        return config //放行

    }else{
        //从本地存储里把token取出来，携带给其他请求
        let token = localStorage.getItem("qf-token") || ""
        // console.log(token);
        config.headers["authorization"] = token;
        return config; //放行
    }
    // console.log(config);
    
}) //请求拦截器，可以拦截所有的请求，然后添加我们需要的逻辑

// 响应拦截器
http.interceptors.response.use(function(config){
    nprogress.done()
    //进行响应拦截
    //当响应回来的状态码 是10022或者1004的时候 需要跳转到登录页，清除token
    //console.log(config)
    if(config.data.code==="10022"||config.data.code==="1004"){
        // router从哪来 引进来即可
        router.push("/login");
        localStorage.removeItem("qf-token");
        //刷新页面
        location.reload()
        //提示用户登录过期
        elementUI.Message.error("登录过期,请重新登入")

    }
    if (config.data.code === "10026") {
        elementUI.Message.error("没有权限")
        return
    }
    return config;
})

export default http;